import java.io.IOException;

class P10037_39643 {

  private static String newLine = System.getProperty("line.separator");

  static String readLn() {
    StringBuffer buffer = new StringBuffer();
    int car = -1;

    try {
      car = System.in.read();
      while ( (car > 0) && (car != newLine.charAt(0))) {
        buffer.append( (char) car);
        car = System.in.read();
      }
      if (car == newLine.charAt(0))
        System.in.skip(newLine.length() - 1);
    }
    catch (IOException e) {
      return (null);
    }

    if ( (car < 0) && (buffer.length() == 0))
      return (null); /* eof */
    return (buffer.toString());
  }

  private static void ordena(int[] array) {
    int length = array.length;
    for (int k = 1; k < length; k++) {
      int daVez = k;
      int apontador = k - 1;
      while ( (apontador > -1) && (array[daVez] < array[apontador])) {
        troca(array, daVez, apontador);
        daVez--;
        apontador--;
      }
    }
  }

  private static void troca(int[] array, int posicao1, int posicao2) {
    int aux = array[posicao1];
    array[posicao1] = array[posicao2];
    array[posicao2] = aux;
  }

  public static void main(String[] args) {

    int numeroDeCasos = Integer.parseInt(readLn());

    for (int k = 0; k < numeroDeCasos; k++) {

      readLn();

      String resposta = "";
      int tempoTotal = 0;


      int n = Integer.parseInt(readLn());
      int[] pessoas = new int[n];
      int i;
      for (i = 0; i < n; i++) {
        pessoas[i] = Integer.parseInt(readLn());
      }

      ordena(pessoas);

      for (i = n - 1; i >= 3 && 2 * pessoas[1] < pessoas[0] + pessoas[i - 1]; i -= 2) {
        resposta += pessoas[0] + " " + pessoas[1] + newLine;
        resposta += pessoas[0] + newLine;
        resposta += pessoas[i - 1] + " " + pessoas[i] + newLine;
        resposta += pessoas[1] + newLine;
        tempoTotal = tempoTotal + pessoas[0] + 2 * pessoas[1] + pessoas[i];
      }
      for (; i >= 2; i--) {
        resposta += pessoas[0] + " " + pessoas[i] + newLine;
        resposta += pessoas[0] + newLine;
        tempoTotal = tempoTotal + pessoas[0] + pessoas[i];
      }
      if (i == 1) {
        resposta += pessoas[0] + " " + pessoas[1] + newLine;
        tempoTotal = tempoTotal + pessoas[1];
      }
      else {
        resposta += pessoas[0] + newLine;
        tempoTotal = tempoTotal + pessoas[0];
      }
      System.out.println(tempoTotal);
      System.out.println(resposta.trim());
      
      if (k + 1 != numeroDeCasos)
    	  System.out.println();
    }
  }
}


